<template><div><h2 id="环境与配置" tabindex="-1"><a class="header-anchor" href="#环境与配置"><span>环境与配置</span></a></h2>
<h2 id="痛点" tabindex="-1"><a class="header-anchor" href="#痛点"><span>痛点</span></a></h2>
<p>典型的配置方法有多个问题：</p>
<ul>
<li>每个团队成员都有自己的配置选项，提交此配置将影响其他团队成员。</li>
<li>生产数据库密码和API密钥不应该存储在存代码库中。</li>
<li>有多个服务器环境：开发（dev），测试（test），生产（prod）等，每个应该有自己的配置。</li>
<li>为每种情况定义所有配置选项非常重复，需要花费太多时间来维护。</li>
</ul>
<h2 id="环境方案" tabindex="-1"><a class="header-anchor" href="#环境方案"><span>环境方案</span></a></h2>
<p>为了解决上述的这些问题，Yii 介绍了一个简单的环境概念。每个环境由 <code v-pre>environments</code> 目录下的一组文件表示。<code v-pre>init</code> 命令用于初始化一个环境。 它真正做的是将所有内容从环境目录复制到所有应用程序所在的根目录。</p>
<p>默认情况下有两个环境：<code v-pre>dev</code> 和 <code v-pre>prod</code> 。 第一个是开发环境。默认打开所有开发调试工具。 第二个是生产环境。默认关闭调试和开发工具。</p>
<p>通常环境包含应用程序引导文件，如 <code v-pre>index.php</code> 和配置文件后缀 <code v-pre>-local.php</code> 。 这些是通常在 <code v-pre>dev</code> 环境中的团队成员的个人配置或特定服务器的配置。 例如，生产数据库连接可以在 <code v-pre>prod</code> 环境 <code v-pre>-local.php</code> 配置中。 这些本地配置被添加到 <code v-pre>.gitignore</code> ，从不推送到源代码仓库。</p>
<p>为了避免重复配置彼此覆盖。例如，前台读取配置以如下顺序：</p>
<ul>
<li><code v-pre>common/config/main.php</code></li>
<li><code v-pre>common/config/main-local.php</code></li>
<li><code v-pre>frontend/config/main.php</code></li>
<li><code v-pre>frontend/config/main-local.php</code></li>
</ul>
<p>普通的参数配置按以下顺序读取：</p>
<ul>
<li><code v-pre>common/config/params.php</code></li>
<li><code v-pre>common/config/params-local.php</code></li>
<li><code v-pre>frontend/config/params.php</code></li>
<li><code v-pre>frontend/config/params-local.php</code></li>
</ul>
<p>后面的配置文件覆盖前者。</p>
<p>这里是完整的流程：</p>
<p><img src="https://cdn.learnku.com/uploads/images/202201/27/93088/gfWhP2TST7.png!large" alt="Advanced application configs"></p>
<h2 id="其他方案-env" tabindex="-1"><a class="header-anchor" href="#其他方案-env"><span>其他方案（.env）</span></a></h2>
<blockquote>
<p>💖喜欢本文档的，欢迎点赞、收藏、留言或转发，谢谢支持！<br>
作者邮箱：zhuzixian520@126.com，github地址：<a href="https://github.com/zhuzixian520" target="_blank" rel="noopener noreferrer">github.com/zhuzixian520</a></p>
</blockquote>
</div></template>


